range: Only call needed functions from adjustment changes
authorBenjamin Otte <otte@redhat.com>
Sat, 29 Nov 2014 01:39:47 +0000 (02:39 +0100)
committerBenjamin Otte <otte@redhat.com>
Sat, 29 Nov 2014 02:42:28 +0000 (03:42 +0100)
No need to recalc the whole range when all that changed was the slider.

gtk/gtkrange.c

index 3e2014f7d37a2e410c47932136b0a7bebfedc8c3..3b6def5f4fdd9769da7a4b7a8bc94d249267f505 100644 (file)
@@ -2950,46 +2950,14 @@ gtk_range_event (GtkWidget *widget,
   return GDK_EVENT_PROPAGATE;
 }
 
-#define check_rectangle(rectangle1, rectangle2)              \
-  {                                                          \
-    if (rectangle1.x != rectangle2.x) return TRUE;           \
-    if (rectangle1.y != rectangle2.y) return TRUE;           \
-    if (rectangle1.width  != rectangle2.width)  return TRUE; \
-    if (rectangle1.height != rectangle2.height) return TRUE; \
-  }
-
-static gboolean
-layout_changed (GtkRangePrivate *priv1,
-               GtkRangePrivate *priv2)
-{
-  check_rectangle (priv1->slider, priv2->slider);
-  check_rectangle (priv1->trough, priv2->trough);
-  check_rectangle (priv1->stepper_a, priv2->stepper_a);
-  check_rectangle (priv1->stepper_d, priv2->stepper_d);
-  check_rectangle (priv1->stepper_b, priv2->stepper_b);
-  check_rectangle (priv1->stepper_c, priv2->stepper_c);
-
-  if (priv1->upper_sensitive != priv2->upper_sensitive) return TRUE;
-  if (priv1->lower_sensitive != priv2->lower_sensitive) return TRUE;
-
-  return FALSE;
-}
-
 static void
 gtk_range_adjustment_changed (GtkAdjustment *adjustment,
                              gpointer       data)
 {
   GtkRange *range = GTK_RANGE (data);
-  GtkRangePrivate *priv = range->priv;
-  GtkRangePrivate priv_aux = *priv;
-
-  priv->recalc_marks = TRUE;
-  priv->need_recalc = TRUE;
-  gtk_range_calc_layout (range);
 
-  /* now check whether the layout changed  */
-  if (layout_changed (priv, &priv_aux))
-    gtk_widget_queue_draw (GTK_WIDGET (range));
+  gtk_range_calc_slider (range);
+  gtk_range_calc_stepper_sensitivity (range);
 
   /* Note that we don't round off to priv->round_digits here.
    * that's because it's really broken to change a value
@@ -3005,15 +2973,12 @@ gtk_range_adjustment_value_changed (GtkAdjustment *adjustment,
                                    gpointer       data)
 {
   GtkRange *range = GTK_RANGE (data);
-  GtkRangePrivate *priv = range->priv;
-  GtkRangePrivate priv_aux = *priv;
 
-  priv->need_recalc = TRUE;
-  gtk_range_calc_layout (range);
+  gtk_range_calc_slider (range);
+  gtk_range_calc_stepper_sensitivity (range);
   
   /* now check whether the layout changed  */
-  if (layout_changed (priv, &priv_aux) ||
-      (GTK_IS_SCALE (range) && gtk_scale_get_draw_value (GTK_SCALE (range))))
+  if (GTK_IS_SCALE (range) && gtk_scale_get_draw_value (GTK_SCALE (range)))
     {
       gtk_widget_queue_draw (GTK_WIDGET (range));
     }